package com.ruoyi.server.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.ruoyi.server.domain.ServerTask;
import com.ruoyi.server.domain.dto.ServerTaskAddDTO;
import com.ruoyi.server.domain.dto.ServerTaskPageDTO;
import com.ruoyi.server.domain.dto.ServerTaskChangeStateDTO;
import com.ruoyi.server.domain.dto.ServerTaskUpdateDTO;
import com.ruoyi.server.domain.vo.ServerTaskAppVO;
import com.ruoyi.server.domain.vo.ServerTaskUserAccountVO;
import com.ruoyi.server.domain.vo.ServerTaskVO;

/**
 * 区服任务Service接口
 *
 * @author ghostmen
 * @date 2024-10-31
 */
public interface IServerTaskService {

    /**
     * 查询区服任务
     *
     * @param taskId 区服任务主键
     * @return 区服任务
     */
    public ServerTaskVO selectServerTaskByTaskId(Long taskId);

    /**
     * 查询区服任务
     *
     * @param taskIds 区服任务主键
     * @return 区服任务
     */
    public List<ServerTask> selectServerTaskByTaskIds(List<Long> taskIds);

    /**
     * 查询区服任务列表
     *
     * @param serverTask 区服任务
     * @return 区服任务集合
     */
    public PageInfo<ServerTaskVO> selectServerTaskList(ServerTask serverTask);

    /**
     * 新增区服任务
     *
     * @param addDTO 区服任务
     * @return 结果
     */
    public int insertServerTask(ServerTaskAddDTO addDTO);

    /**
     * 修改区服任务
     *
     * @param serverTask 区服任务
     * @return 结果
     */
    public int updateServerTask(ServerTaskUpdateDTO serverTask);

    /**
     * 批量删除区服任务
     *
     * @param taskIds 需要删除的区服任务主键集合
     * @return 结果
     */
    public int deleteServerTaskByTaskIds(Long[] taskIds);

    /**
     * 删除区服任务信息
     *
     * @param taskId 区服任务主键
     * @return 结果
     */
    public int deleteServerTaskByTaskId(Long taskId);


    /**
     * @throws
     * @MethodName changeState
     * @author zhouzihao
     * @param: changeStateDTO
     * @DateTime 2024年11月1日, 0001 上午 10:04
     * @return: int
     * @description:变更区服任务状态
     */
    int changeState(ServerTaskChangeStateDTO changeStateDTO);

    /**
     * @throws
     * @MethodName taskListByRegionId
     * @author zhouzihao
     * @param: pageDTO
     * @DateTime 2024年11月1日, 0001 下午 03:52
     * @return: java.util.List<com.ruoyi.server.domain.ServerTask>
     * @description:小程序，app查询区服任务列表
     */
    PageInfo<ServerTaskAppVO> taskListByRegionId(ServerTaskPageDTO pageDTO);

    /**
     * @throws
     * @MethodName getAppServerTaskByTaskId
     * @author zhouzihao
     * @param: taskId
     * @DateTime 2024年11月1日, 0001 下午 04:07
     * @return: com.ruoyi.server.domain.ServerTask
     * @description:app查询区服任务详情
     */
    ServerTask getAppServerTaskByTaskId(Long taskId);

    /**
     * @throws
     * @MethodName getServerTaskList
     * @author zhouzihao
     * @DateTime 2024年11月4日, 0004 上午 10:11
     * @return: java.util.List<com.ruoyi.server.domain.ServerTask>
     * @description:查询区服任务列表
     */
    List<ServerTask> getServerTaskList();

    /**
     * 导出区服任务详细信息及账号密码
     *
     * @param taskId
     * @return
     */
    List<ServerTaskUserAccountVO> selectServerTaskAppUserAccountListBy(Long taskId);
}
